perm filename MANFIG.MF[MF,DEK]1 blob sn#458003 filedate 1979-07-14 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00032 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	% Figures for the METAFONT manual
C00006 00003	"Fig. 1-1. Six points"
C00007 00004	"Fig. 1-2. Six points and one line"
C00008 00005	"Fig. 1-3. Six points and three lines"
C00009 00006	"Fig. 2-1. Six points and a bean shape"
C00010 00007	"Fig. 2-2. Six points and an ugly line"
C00011 00008	"Fig. 2-3. METAFONT curves when theta=60 and phi≥0."
C00012 00009	"Fig. 2-4. METAFONT curves when theta=60 and phi<0."
C00013 00010	"Fig. 2-5. Heart points"
C00014 00011	"Fig. 2-6. Lumpy heart"
C00015 00012	"Fig. 2-7. Better heart"
C00016 00013	"Fig. 2-8. Ten-point heart"
C00017 00014	"Fig. 2-9. True valentine"
C00018 00015	"Fig. 2-10. Four-point valentine"
C00019 00016	"Fig. 2-11. Shoe points"
C00020 00017	"Fig. 2-12a. Gnarled shoe"
C00021 00018	"Fig. 2-12b. True shoe"
C00022 00019	"Fig. 3-1. cpen, hpen, vpen"
C00023 00020	"Fig. 3-2a. True shoe with hpen"
C00024 00021	"Fig. 3-2b. True valentine with vpen"
C00025 00022	"Fig. 3-3. cpen, lers, rers"
C00026 00023	"Fig. 3-4. True valentine with spen"
C00027 00024	"Fig. 3-5. Example of epen"
C00028 00025	% Fig. 4-1 will be typeset
C00029 00026	% Fig. 4-2 will be typeset
C00030 00027	"Fig. 5-1. Intersection of straight lines"
C00031 00028	"Fig. 6-1. Filled valentine"
C00032 00029	"Fig. 6-2. Crossed ddraw"
C00033 00030	"Fig. 7-1. Differences in rounding"
C00034 00031	"Fig. 8-1. Double use of darc"
C00035 00032	"Fig. 8-2. Superellipse"
C00036 ENDMK
C⊗;
% Figures for the METAFONT manual
proofmode; chardisplay; titletrace;

subroutine curve(var theta)(var phi)(index i,index j):
cpen; 1 draw i{cosd theta, sind theta}..j{cosd phi, -sind phi}.

subroutine arc(var s):
no proofmode; hpen;
x1=s+10; y1=50; x2=s; y2=0; x3=s+10; y3=-50;
9 draw 1{-1,-1}..2{0,-1}..3{+1,-1}.

subroutine darc(index i,index j,var maxwidth):
x1=x5=xi; x2=x4=1/sqrttwo[xi,xj]; x3=xj;
y1=yi; y5=yj; y3=1/2[yi,yj];
y2=1/sqrttwo[y3,yi]; y4=1/sqrttwo[y3,yj];
hidden x4-1,y4; hidden x2-1,y2;
hpen; draw |w0|1{x3-x1,0}..|2/3[w0,maxwidth]|2{x3-x1,y3-y1}..
    |maxwidth#|3{0,y3-y1}..|2/3[w0,maxwidth]|
    4{x5-x3,y5-y3}..|w0|5{x5-x3,0}.
"Fig. 1-1. Six points";
no proofmode; x8=-10;y8=110; x9=210;y9=-10; epen (0,0)#;
1 draw 8; draw 9; proofmode; % This makes raster visible without a subsequent draw;
x1=x4=y4=y5=y6=0;
x2=x5=y1=y2=y3=100;
x3=x6=200.
"Fig. 1-2. Six points and one line";
x1=x4=y4=y5=y6=0;
x2=x5=y1=y2=y3=100;
x3=x6=200;
cpen; 9 draw 1..6.
"Fig. 1-3. Six points and three lines";
x1=x4=y4=y5=y6=0;
x2=x5=y1=y2=y3=100;
x3=x6=200;
cpen; 9 draw 1..6; draw 2..5; draw 3..4.
"Fig. 2-1. Six points and a bean shape";
x1=x4=y4=y5=y6=0;
x2=x5=y1=y2=y3=100;
x3=x6=200;
cpen; 9 draw 5..4..1..3..6..5.
"Fig. 2-2. Six points and an ugly line";
x1=x4=y4=y5=y6=0;
x2=x5=y1=y2=y3=100;
x3=x6=200;
cpen; 9 draw 4..1..3.
"Fig. 2-3. METAFONT curves when theta=60 and phi≥0.";
x1=y1=y2=0; x2=150;
hidden x1,y1+1; hidden x2,y2+1;
call curve(60,120,1,2);
call curve(60,90,1,2);
call curve(60,60,1,2);
call curve(60,30,1,2);
call curve(60,0,1,2).
"Fig. 2-4. METAFONT curves when theta=60 and phi<0.";
x1=y1=y2=0; x2=150;
call curve(60,-120,1,2);
call curve(60,-90,1,2);
call curve(60,-60,1,2);
call curve(60,-30,1,2).
"Fig. 2-5. Heart points";
no proofmode; x9=-10;y9=200; x10=210;y10=-10; epen (0,0)#;
draw 9; draw 10; proofmode; % This makes raster visible without a subsequent draw;
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0.
"Fig. 2-6. Lumpy heart";
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
cpen; 9 draw 1..2..3..4..5; draw 5..6..7..8..1.
"Fig. 2-7. Better heart";
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
cpen; 9 draw 1{50,40}..2..3..4..5{-50,-36};
draw 5{-50,36}..6..7..8..1{50,-40}.
"Fig. 2-8. Ten-point heart";
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
x9=200-x10=181; y9=y10=97;
cpen; 9 draw 1{50,40}..2..3..9..4..5{-50,-36};
draw 1{-50,40}..8..7..10..6..5{50,-36}.
"Fig. 2-9. True valentine";
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
cpen; 9 draw 1{50,40}..2{1,0}..3{0,-1}..4..5{-50,-36};
draw 1{-50,40}..8{-1,0}..7{0,-1}..6..5{50,-36}.
"Fig. 2-10. Four-point valentine";
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
cpen; 9 draw 1{50,40}..3{0,-1}..5{-50,-36};
draw 1{-50,40}..7{0,-1}..5{50,-36}.
"Fig. 2-11. Shoe points";
incy -25;
no proofmode; x10=-10;y10=325; x11=210;y11=-10; epen (0,0)#;
draw 11; draw 10; proofmode; % This makes raster visible without a subsequent draw;
x1=77;y1=322;x2=132;y2=220;x3=117;y3=150;
x4=120;y4=100;x5=131;y5=55;x6=95;y6=2;
x7=48;y7=60;x8=38;y8=140;x9=20;y9=200;
incy 0.
"Fig. 2-12a. Gnarled shoe";
incy -25;
x1=77;y1=322;x2=132;y2=220;x3=117;y3=150;
x4=120;y4=100;x5=131;y5=55;x6=95;y6=2;
x7=48;y7=60;x8=38;y8=140;x9=20;y9=200;
cpen; 9 draw (9..)1..2..3..4..5..6..7..8..9..1(..2);
incy 0.
"Fig. 2-12b. True shoe";
incy -25;
x1=77;y1=322;x2=132;y2=220;x3=117;y3=150;
x4=120;y4=100;x5=131;y5=55;x6=95;y6=2;
x7=48;y7=60;x8=38;y8=140;x9=20;y9=200;
x10=125;y10=184;
cpen; 9 draw1{1,0}..2{0,-1}..10{-25,-60}..3{0,-1}..4{18,-60}
	..5{0,-1}..6{-1,0}..7{0,1}..8{-30,60}..9{0,1}..1{1,0};
incy 0.
"Fig. 3-1. cpen, hpen, vpen";
new w0;
x1=0;x2=100;x3=200;y1=y2=y3=0;
w0=25;
cpen; 75 draw 1;
hpen; 75 draw 2;
vpen; 75 draw 3.
"Fig. 3-2a. True shoe with hpen";
no proofmode;
incy -25;
x1=77;y1=322;x2=132;y2=220;x3=117;y3=150;
x4=120;y4=100;x5=131;y5=55;x6=95;y6=2;
x7=48;y7=60;x8=38;y8=140;x9=20;y9=200;
x10=125;y10=184;
proofmode;
new w0; w0=3;
hpen; 9 draw1{1,0}..2{0,-1}..10{-25,-60}..3{0,-1}..4{18,-60}
	..5{0,-1}..6{-1,0}..7{0,1}..8{-30,60}..9{0,1}..1{1,0};
incy 0.
"Fig. 3-2b. True valentine with vpen";
no proofmode;
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
proofmode;
new w0; w0=3;
vpen; 9 draw 1{50,40}..2{1,0}..3{0,-1}..4..5{-50,-36};
draw 1{-50,40}..8{-1,0}..7{0,-1}..6..5{50,-36}.
"Fig. 3-3. cpen, lers, rers";
new w0;
x1=0;x2=50;x3=100;y1=y2=y3=0;
hidden x1+1,y1; hidden x3-1,y3;
w0=25;
cpen; 150 draw 2;
lers; 35 draw 3;
rers; 35 draw 1.
"Fig. 3-4. True valentine with spen";
no proofmode;
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
proofmode;
spen(4/27,-16/81 sqrt 3,28/81,0,0,0,0);
draw 1{50,40}..2{1,0}..3{0,-1}..4..5{-50,-36};
draw 1{-50,40}..8{-1,0}..7{0,-1}..6..5{50,-36}.
"Fig. 3-5. Example of epen";
x1=0;y1=-20;x2=50;y2=0;x3=100;y3=20;
hidden x1,y1+1; hidden x2,y2+1; hidden x3,y3+1;
cpen;150 draw2;
epen(0,0)(-1,1)(-2,2)(-3,3)(-4,4)#;
draw1..3.
% Fig. 4-1 will be typeset
% Fig. 4-2 will be typeset
"Fig. 5-1. Intersection of straight lines";
x1=y1=0; x2=y2=100;
x3=25; y3=75;
x4=200; y4=50;
x5=alpha[x1,x2]=beta[x3,x4];
y5=alpha[y1,y2]=beta[y3,y4];
cpen; 9 draw 1..2; draw 3..4.
"Fig. 6-1. Filled valentine";
no proofmode;
x1=100; y1=162;
x2=200-x8=140; y2=y8=178;
x3=200-x7=185; y3=y7=125;
x4=200-x6=161; y4=y6=57;
x5=100; y5=0;
x9=1/3[x1,x3]; y9=1/3[y1,y5];
proofmode;
epen (0,0); 9 ddraw 1{50,40}..2{1,0}..3{0,-1}..4..5{-50,-36},
	9..9..9..9..9;
ddraw 1{-50,40}..8{-1,0}..7{0,-1}..6..5{50,-36}, 9..9..9..9..9.
"Fig. 6-2. Crossed ddraw";
x1=5;y1=10;x2=300;y2=-5;
x3=0;y3=0;x4=298;y4=10;
cpen; 9 ddraw 1{x2-x1,2(y2-y1)}..2{1,0},
	3{1,0}..4{x4-x3,2(y4-y3)}.
"Fig. 7-1. Differences in rounding";
new w0; w0=3; call arc(0); call arc(50.4999); call arc(100.5001).
"Fig. 8-1. Double use of darc";
new w0;
x1=0; y1=y3=150; x2=50; y2=0; x3=100;
sqrttwo=sqrt 2; w0=3; w1=9;
call `a darc(2,1,w1);
call `b darc(2,3,w1).
"Fig. 8-2. Superellipse";
new sqrttwo;
x1=0; y1=y3=150; x2=50; y2=0; x3=100;
sqrttwo=1.319507911; % 2↑(2/5), a la Piet Hein;
call `a darc(2,1,w1);
call `b darc(2,3,w1).